﻿/******************************************************************************* 
  Copyright (C), 1988-2020, zeno Tech. Co., Ltd.
  Description:  调试命令接口,提供应用程序统一的调试命令管理接口
  Function List:
            
*******************************************************************************/
#ifndef SYS_DEBUG_H 
#define SYS_DEBUG_H 

#ifdef __cplusplus
extern "C" {
#endif

/*=============================================================================
                                 Includes                                  
==============================================================================*/


/*=============================================================================
                               Macro Definition
==============================================================================*/
/* 调试命令名最大长度 */
#define SYS_DEBUG_NAME_LEN          32

/* 系统线程名最大长度 */
#define SYS_THD_NAME_LEN            32            
                        
/*=============================================================================
                        Local Structures and Typedef 
==============================================================================*/

/*******************************************************************************
  Description:  调试命令命令执行函数
  Input:        - count: 参数个数
                - pInput: 参数字符串数组
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
typedef int (*SYS_debugFunc)(int count, char *pInput[]);


/* 命令注册参数 */ 
typedef struct
{
    char cmdName[SYS_DEBUG_NAME_LEN]; /* 命令名 */
    SYS_debugFunc func; /* 命令执行函数 */
} SYS_cmdParams_t;


/* 系统线程信息 */
typedef struct
{
    char name[SYS_THD_NAME_LEN];                /* 系统线程名 */
} SYS_thdInfo_t;


/*=============================================================================
                             extern  Variables                                  
==============================================================================*/


/*=============================================================================
                             Function Definition                                  
==============================================================================*/ 
/*******************************************************************************
  Function:     SYS_DebugRegCmd
  Description:  注册一条调试命令
  Input:        - pCmdParams: 命令注册参数
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int SYS_DebugRegCmd(SYS_cmdParams_t *pCmdParams);


/*******************************************************************************
  Function:     SYS_DebugUnRegCmd
  Description:  注销一条调试命令
  Input:        - pCmdName: 命令字符串
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int SYS_DebugUnRegCmd(char *pCmdName);


/*******************************************************************************
  Function:     SYS_DebugUnRegThd
  Description:  注册一个系统线程
  Input:        - pThdInfo: 系统线程信息
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       线程处理函数中调用
*******************************************************************************/
int SYS_DebugRegThd(SYS_thdInfo_t *pThdInfo);


/*******************************************************************************
  Function:     SYS_DebugUnRegThd
  Description:  注销一个系统线程
  Input:        无
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int SYS_DebugUnRegThd(void);


#ifdef __cplusplus
}
#endif
#endif // SYS_DEBUG_H

